{ "cells": [ { "cell_type": "markdown", "id": "b7e6c0a2", "metadata": {}, "source": [ "# Bedste linje\n", "\n", "Dette materiale er en tilpasse udgave af [Intermat - Projektdag - Bedste rette linje og docking](https://intermat20.compute.dtu.dk/ct/Projektdag_bedste_linje.html).\n", "\n", "For en given punktmængde i planen ønsker vi at finde den linje, som approksimerer punktmængden bedst muligt. Godheden af approksimationen udtrykkes ved en fejlfunktion, som simpelthen angiver summen af kvadraterne på de vinkelrette afstande fra de enkelte punkter til de linjer, der kandiderer til at være den bedste i den forstand. Approksimationen fås altså IKKE ved den (måske velkendte) lineære regression, hvor den *lodrette afstand* fra de enkelte punkter til linjen benyttes. *Lodret* betyder her: parallel med $y$-aksen, så lineær regression er meget sensitiv overfor valg af koordinatsystem. Det er approksimationen med de vinkelrette afstande til linjen ikke. Den approksimation er derfor meget mere geometrisk. \n", "\n", "Hvorfor afhænger den vinkelrette afstand fra et punkt til en linje ikke af det koordiantsystem, vi benytter til at beregne den afstand?\n", "\n", "## Opsætning\n", "Vi starter med at importere de nødvendige kodepakker." ] }, { "cell_type": "code", "execution_count": null, "id": "b171dd7d", "metadata": {}, "outputs": [], "source": [ "from gym_cas import *" ] }, { "attachments": { "image.png": { "image/png": "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LJGih1o67rj0ezrmmLjttKfBJiP9taLFjxJAZ6giCwLoLAvK9IFpMmgA02SARaiLAKYpObb2b5pCRngFL/xZc801a9UHb7rpJp133nm69tpra4cEd9YVdaXPfEZ69NHO6eHkk6Xjj0/fMIXRssnonDWj1Q8TQGcoIgsC6CwLyvSBaTJoANNkgEWoiwCmKTm2UD1v1113rRVoqXeFkuRpm6ZwkO1ll0mHHJJ8rJ7IcO7Tt77lyUyWwyYjGSeimiOAzprjR3YyAugsGSeimiOAaTLwwzQZYBHqIhBeJwtnNL355psaNGiQ2traXO1UJenFF1/U6aefrltuuaX2hKl79+5ad911a2c1jRs3LjI2h6hHjx6p4Aje7Mtflq64on5zobrdn/4krbGGtM8+ip502bsOS37RRdKhh9pzLRlsMiy0iPUSQGdecuRZCKAzCy1ivQQwTQZymCYDLELdBLj5u9F1SmKohNeo5sQFF0hHHil17frBEMLhs3vsYRtSqIwXnmIFw9XZFzrrbMK0HwigM3SQBQF0lgVl+sA0GTSAaTLAItRNgJu/G11qiYsXSyeeqOhw3PpNbrSRoidc0sYbrzjmvfekTTeVnn022bB6946fTI0alSy+2Sh01ixB8pMQQGdJKBHTLAF01ixB8pMQwDQlofSvGEyTARahLgLhxv/yyy/XXtHbYostohLT3VztkOQjEB3/pN13l557rn7+f/6ndNJJil77a9zHL38pfe97jeNWX1268UZphx0ax6YVwSYjLZK00xEBdIY+siCAzrKgTB+YJoMGME0GWIS6CFAIwoWtqaTwROj3v5e+8pWOm5kwQdpxR1tX0adpWn99aeHC+nnRJ1i69VZpyy1tbTcbzSajWYLkJyGAzpJQIqZZAuisWYLkJyGAaUpC6V8xmCYDLEJdBDBNLmyupGBoPve5+BW7etcBB0gXXiituqqri1rSEUdIF1+84vyo1kfNMIX/zPpik5E18Wr2h86que5ZzxqdZU28mv1hmgzrjmkywCLURQDT5MJmSgomKbyC19F16aXSQQelcz5SVBl9ha/dbbVVbNjCk6ZWXGwyWkG9en2is+qteStmjM5aQb16fWKaDGuOaTLAItRFANPkwtYw6e2342+Lzj23fui220rXXCNtsEHD5swB228vPfTQB2nDhkk33CCFb5ladbHJaBX5avWL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" } }, "cell_type": "markdown", "id": "e17567b9", "metadata": {}, "source": [ "## Punktmængder og linjer\n", "\n", "I et $(x, y)$-koordinatsystem i planen har vi givet et punkt $p=(x,y)$ og en linje $L_e$ igennem $(0, 0)$ med enhedsretningsvektor $\\boldsymbol e=(\\cos(v), \\sin(v))$. \n", "\n", "![](attachment:image.png)\n", "\n", "Linjen langs den korteste strækning fra $p$ til linjen $L_e$ danner en ret vinkel med $L_e$. Dermed udspænder skæringspunktet, Origo og $p$ tilsammen en retvinklet trekant.\n", "\n", ">Hvad er afstanden $r$ fra $p$ til linjen $L_e$ udtrykt ved $p$’s koordinater $(x,y)$ og vinklen $v$?" ] }, { "cell_type": "markdown", "id": "2e5534da", "metadata": {}, "source": [ "Kan du udtrykke kvadratet $r^{2}$ som et *matrix produkt* på følgende måde: \n", "\n", "\\begin{equation}\n", "r^{2} = \\left[\\begin{array}{cc}\n", "e_{1}&e_{2} \n", "\\end{array}\\right] \\cdot \\left[\\begin{array}{cc}\n", "y^{2} & -xy\\\\\n", "-yx&x^{2} \n", "\\end{array}\\right] \\cdot \\left[\\begin{array}{c}\n", "e_{1}\\\\\n", "e_{2}\n", "\\end{array}\\right]\n", "\\end{equation} " ] }, { "cell_type": "markdown", "id": "2c78116d", "metadata": {}, "source": [ "Vi ønsker at definere en funktion, der kan beregne denne værdi for ethvert givet punktet $p$ og givet vinkel $v$. I Python bruger vi `def` til at skrive en funktion." ] }, { "cell_type": "markdown", "id": "6c88d03c", "metadata": {}, "source": [ "I følgende kodecelle skal vi definere en funktion `afstand2`, der netop beregner den ønskede kvadrerede afstand $r^{2}$ fra punktet $p$ til linjen $L_e$. Som input har vi $p$'s koordinater $x$ og $y$ samt vinklen $v$.\n", "\n", ">Brug dit resultat fra tidligere til at færdiggøre funktionen." ] }, { "cell_type": "code", "execution_count": null, "id": "6a72ad82", "metadata": {}, "outputs": [], "source": [ "def afstand2(x, y, v):\n", " \"\"\"\n", " Beregner den kvadrerede afstand fra punktet (x,y) til linjen givet\n", " ved enhedsvektoren e = (cos(v),sin(v)).\n", " \"\"\"\n", " resultat = \"INDSÆT KODE HER\"\n", "\n", " return resultat" ] }, { "cell_type": "markdown", "id": "595f5a56", "metadata": {}, "source": [ "I følgende kodecelle kan du teste din funktion. Du kan f.eks. teste det simple tilfælde, hvor $v=0$, dvs. $L_e$ ligger på $x$-aksen.\n", ">Hvad forventer du afstanden fra et punkt $(x,y)$ er i det tilfælde?\n", "\n", ">Kan du eftervise det i koden?" ] }, { "cell_type": "code", "execution_count": null, "id": "b73f95ca", "metadata": {}, "outputs": [], "source": [ "x = \"INDSÆT KODE HER\"\n", "y = \"INDSÆT KODE HER\"\n", "v = \"INDSÆT KODE HER\"\n", "\n", "r2 = afstand2(x,y,v)\n", "f\"Afstanden er {sqrt(r2)}\"" ] }, { "cell_type": "markdown", "id": "ecac0c50", "metadata": {}, "source": [ "Vi ønsker nu naturligvis at udvide til at kigge på flere punkter på én gang. Vi vil vælge en punktmængde $Q$ med $7$ punkter $q_i = (x_i, y_i), \\, i = 1, \\cdots, 7$, i planen. Målet er at bestemme summen af kvadrat-afstandene $r^2$ fra $q_i$ til $L_e$, altså udtrykket\n", "\n", "$$\n", "S(Q, v) = \\sum_{i=1}^{i=7} r^2(v)(q_i).\n", "$$\n", "\n", "I Python er det praktisk at gemme punkterne i en $2\\times 7$ matrix\n", "\n", "$$\n", "Q = \\begin{bmatrix}x_1&x_2&\\dots&x_7\\\\ y_1&y_2&\\dots & y_7\\end{bmatrix},\n", "$$\n", "\n", "så den $i$'te søjle i $Q$ indeholder koordinaterne til punktet $q_i$. I følgende kodecelle defineres $Q$ med tre punkter $(4,8)$, $(-3,5)$ og $(0,9)$. \n", "\n", "> Vælg $7$ punkter med koordinater mellem $-10$ og $10$. Modificer følgende kodecelle så $Q$ indeholder dine $7$ punkter." ] }, { "cell_type": "code", "execution_count": null, "id": "ee8e0b48", "metadata": {}, "outputs": [], "source": [ "# Opsætning af data-matricen - INDSÆT EGNE PUNKTER\n", "Q = Matrix([[4, 8], [-3, 5], [0, 9]]).transpose()\n", "\n", "# printer data-matricen\n", "display(\"Matrix Q:\", Q)" ] }, { "cell_type": "markdown", "id": "24740963", "metadata": {}, "source": [ "I følgende kodecelle laver vi et plot af punktmængden i planen." ] }, { "cell_type": "code", "execution_count": null, "id": "6278ac5e", "metadata": {}, "outputs": [], "source": [ "p1 = plot_points(\n", " [*Q[0, :]],\n", " [*Q[1, :]],\n", " aspect=\"equal\",\n", " axis_center=(0, 0),\n", " title=\"Punkter i planen\",\n", " show=False,\n", ")\n", "p2 = plot_points([(0, 0)], label=\"Origo\", show=False)\n", "(p1 + p2).show()" ] }, { "cell_type": "markdown", "id": "9c2f9976", "metadata": {}, "source": [ "Når vi arbejder med en matrix $Q$ i Python (en Sympy matrix), tilgår vi elementer ved at skrive `Q[i, j]`.\n", "\n", "Her betyder\n", "- `i` rækken, dvs. hvilken vandret linje vi vælger.\n", "- `j` søjlen, dvs. hvilken lodret linje vi vælger.\n", "\n", "Python tæller fra 0, så `Q[0, 1]` betyder \"første række, anden søjle\". Vi kan også bruge et kolon `:` til at sige \"tag det hele\" i en given retning.\n", "\n", "- `Q[:, j]` betyder hele søjle $j$.\n", "- `Q[i, :]` betyder hele række $i$.\n", "\n", "Det betyder altså, at udtrykket `Q[:, i]` giver hele punktet nummer `i`, fordi det henter alle rækker i søjle `i`. Følgende kodecelle tester disse udtryk. \n", "\n", "> Færdiggør kodecellen, så sidste linje printer det andet punkt $q_2$." ] }, { "cell_type": "code", "execution_count": null, "id": "440abcc5", "metadata": {}, "outputs": [], "source": [ "# printer data-matricen\n", "display(\"Matrix Q:\", Q)\n", "\n", "# Et tal i Q: \n", "display(Math(f\"$y_1 = {Q[1,0]}$\"))\n", "\n", "# Alle x-koordinater:\n", "display(\"x-koordinaterne\", Q[0,:])\n", "\n", "# Andet punkt:\n", "display(\"Punkt 2\", \"INDSÆT KODE HER\")" ] }, { "cell_type": "markdown", "id": "8076e3de", "metadata": {}, "source": [ "For at kigge på alle punkterne i punktmængden, kan vi bruge en *for-løkke*. Kodecellen nedenfor printer alle punkterne i $Q$ vha. en for-løkke. For-løkken går igennem tallene $j=0,1,...,6$ og for hver printes den $j$'te søjle i $Q$ altså $q_j$." ] }, { "cell_type": "code", "execution_count": null, "id": "4aec882f", "metadata": {}, "outputs": [], "source": [ "# finder antal punkter i Q - vi har N = 7\n", "N = Q.shape[1] \n", "\n", "# for-løkke til at printe alle punkter\n", "for j in range(N): # løkke over tallene i = 0,1,...,N-1\n", " # finder punkt j\n", " q = Q[:,j]\n", "\n", " # printer punkt i\n", " print(\"Punkt\", j+1, \":\", q)" ] }, { "cell_type": "markdown", "id": "04d1747c", "metadata": {}, "source": [ "Vi vil nu definere en funktion `sum_afstand2`, der beregner udtrykket $S(Q,v)$. Vi bruger en for-løkke til at tage ét punkt ad gangen. Vi kan bruge `afstand2(x,y,v)` til at beregne den kvadrerede afstand for det enkelte punkt og lægge det til resultatet.\n", "\n", ">Færdiggør funktionen." ] }, { "cell_type": "code", "execution_count": null, "id": "e0466816", "metadata": {}, "outputs": [], "source": [ "def sum_afstand2(Q,v):\n", " '''\n", " Beregner summen af de kvadrerede afstande fra punkterne i Q til linjen\n", " givet ved enhedsvektoren e = (cos(v),sin(v)).\n", " '''\n", " # finder antal punkter i Q\n", " N = Q.shape[1] \n", "\n", " resultat = 0\n", " for j in range(N): # løkke over tallene j = 0,1,...,N-1\n", " # finder punkt j\n", " q = \"INDSÆT KODE HER\"\n", "\n", " # koordinaterne for punkt j\n", " x = q[0]\n", " y = q[1]\n", "\n", " # beregner den kvadrerede afstand fra punkt j til linjen\n", " r2 = \"INDSÆT KODE HER\"\n", "\n", " # lægger den kvadrerede afstand til resultatet\n", " resultat = resultat + r2\n", "\n", " # når vi er løbet gennem alle punkter kan det endelige resultat returneres\n", " return resultat" ] }, { "cell_type": "markdown", "id": "f6a81e0f", "metadata": {}, "source": [ "Målet er nu at finde den linje $L_e$, der bedst approksimerer punktmængden. Dvs. vi ønsker at finde den vinkel $v$, der giver den mindste værdi af $S(Q,v)$. I følgende kodecelle genereres et plot over punktmængden $Q$ og linjen $L_e$, og $S(Q,v)$ beregnes. \n", "> Eksperimenter med valget af vinkel $v$ så du synes linjen bedst approksimerer punktmængden. Giver det også en lille værdi af $S(Q,v)$?\n", "\n", "**Husk:** Vinklen er i radianer, så vælg $v\\in[0,2\\pi]$. Alternativt kan man omregne fra grader til radianer." ] }, { "cell_type": "code", "execution_count": null, "id": "4af530be", "metadata": {}, "outputs": [], "source": [ "from gym_cas import x # Sørg for at x er defineret som en symbolsk variabel\n", "\n", "# Vælg en vinkel for linjen i radianer\n", "v = pi / 4 # vælg selv værdien her\n", "\n", "# Beregn S(Q,v)\n", "SQv = sum_afstand2(Q, v)\n", "\n", "# Genererer plot af punkter og linje\n", "X = [*Q[0, :]]\n", "Y = [*Q[1, :]]\n", "p1 = plot_points(\n", " X,\n", " Y,\n", " aspect=\"equal\",\n", " axis_center=(0, 0),\n", " title=f\"Sum af kvadrerede afstande: {SQv:.2f}\",\n", " show=False,\n", ")\n", "p2 = plot(tan(v) * x, (x, min(X), max(X)), label=f\"v = {v:.2f}\", show=False)\n", "(p1 + p2).show()" ] }, { "cell_type": "markdown", "id": "3457eed3", "metadata": {}, "source": [ "## Den bedste linje\n", "\n", "Indtil videre har vi kun ledt efter linjer $L_e$, der går igennem Origo. For at kunne finde den bedste af alle linjer i planen til at approksimere punktmængden er vi nødt til at se ud over den restriktion. \n", "\n", "Det viser sig - ved Steiner's parallakse sætning - at for parallelle linjer, så er fejlen ved linjeapproksimationen, altså størrelsen $S(Q,v)$, mindst for linjen der går igennem punktmængdens massemidtpunkt. Af det kan vi konkludere, at den bedste linjeapproksimation nødvendigvis må gå igennem massemidtpunktet. I tilfælde med $7$ punkter beregnes massemidtpunktet som\n", "\n", "$$\n", "CM(Q)=\\frac{1}{7}\\sum_{i=1}^7 q_i,\n", "$$\n", "\n", "altså gennemsnittet af punkterne. For at lede igennem alle linjer, der går igennem $CM(Q)$, kan vi f.eks. dreje linjer med en vinkel som før, men rykke omdrejningspunktet fra Origo til $CM(Q)$. Alternativt, og helt ækvivalent, kan vi rykke hele punktmængden $Q$ så massemidtpunktet ligger i Origo. Så kan vi bruge vores metode fra før. Vi kalder den rykkede punktmængde for *centreret*. Det svarer altså til at kigge på punkterne\n", "\n", "$$\n", "q_i-CM(Q),\\quad i=1,...,7\\;.\n", "$$\n", "\n", "For at bestemme den centrerede punktmængde skal vi så først beregne massemidtpunktet. Vi kan bruge funktionen gennemsnitsfunktion `mean` til at beregne massemidtpunktet i Python." ] }, { "cell_type": "code", "execution_count": null, "id": "36bf83cf", "metadata": {}, "outputs": [], "source": [ "# beregner massemidtpunktet CM(Q)\n", "CM = vector(mean(X).evalf(), mean(Y).evalf())\n", "\n", "\n", "display(\"Massemidtpunktet CM\", CM)" ] }, { "cell_type": "markdown", "id": "f9069a25", "metadata": {}, "source": [ "Vi kan nu bruge massemidtpunktet til at beregne den centrerede punktmængde $Q_c$. Det gøres let i Python ved at trække punktet $CM(Q)$ fra alle punkt-elementerne i matricen $Q$." ] }, { "cell_type": "code", "execution_count": null, "id": "86b5e3d0", "metadata": {}, "outputs": [], "source": [ "Qc = Q\n", "for j in range(Q.shape[1]):\n", " Qc[:, j] = Q[:, j] - CM\n", "display(\"Centreret punktmængde Qc:\", Qc)" ] }, { "cell_type": "markdown", "id": "f6bce302", "metadata": {}, "source": [ "Den centrerede punktmængde $Q_c$ er altså dannet ved at flytte hele punktmængden $Q$ med afstanden mellem massemidtpunktet og Origo. Lad os illustrere dette ved at plotte punktmængde $Q$ sammen med $Q_c$. Vi viser også både massemidtpunktet $CM$ og Origo. \n", ">Ser resultatet korrekt ud?" ] }, { "cell_type": "code", "execution_count": null, "id": "4b9bd677", "metadata": {}, "outputs": [], "source": [ "# plotter punktmængden Q\n", "p1 = plot_points(X,Y, aspect=\"equal\", axis_center=(0, 0), label=\"Q\", show=False)\n", "\n", "# plotter den centrerede punktmængde Qc\n", "p2 = plot_points([*Qc[0,:]], [*Qc[1,:]], label=\"Qc\", show=False)\n", "\n", "# plotter massemidtpunktet CM(Q)\n", "p3 = plot_points([CM[0]], [CM[1]], label=\"Massemidtpunkt\", show=False)\n", "\n", "# plotter Origo\n", "p4 = plot_points([0], [0], label=\"Origo\", show=False)\n", "\n", "(p1 + p2 + p3 + p4).show()" ] }, { "cell_type": "markdown", "id": "fdf9ac52", "metadata": {}, "source": [ "Vi vil nu finde den bedste linje til at approksimere den centrerede punktmængde $Qc$. Vi kigger igen på linjer, der går igennem Origo (som er massemidtpunktet i det her tilfælde). Ligesom tidligere vælges en vinkel $v$. Vi genererer så et plot og beregner fejlen $S(Q_c,v)$ med `sum_afstand2`.\n", "\n", ">Eksperimenter med valget af $v$ for at finde den bedste linjeapproksimation. Kan du få en mindre værdi af fejlen $S(Q_c,v)$ end for den ikke-centrerede punktmængde." ] }, { "cell_type": "code", "execution_count": null, "id": "05e485f0", "metadata": {}, "outputs": [], "source": [ "# Vælg en vinkel for linjen i radianer\n", "v = pi/4 # vælg selv værdien her\n", "\n", "# Beregn S(Q,v)\n", "SQv = sum_afstand2(Qc, v)\n", "\n", "# Genererer plot af punkter og linje\n", "Xc = [*Qc[0, :]]\n", "Yc = [*Qc[1, :]]\n", "p1 = plot_points(\n", " Xc,\n", " Yc,\n", " aspect=\"equal\",\n", " axis_center=(0, 0),\n", " title=f\"Sum af kvadrerede afstande: {SQv:.2f}\",\n", " show=False,\n", ")\n", "p2 = plot(tan(v) * x, (x, min(Xc), max(Xc)), label=f\"v = {v:.2f}\", show=False)\n", "(p1 + p2).show()" ] }, { "cell_type": "markdown", "id": "ecad5223", "metadata": {}, "source": [ "## Den bedste linje med SVD\n", "\n", "Data-matricen $Q_c$ kan (som alle andre matricer) SVD dekomponeres (her udtrykt for en $(2 \\times 7)$-data-matrix) - se modul $2$ om SVD dekomponering: \n", "\n", "$$\n", "Q_c = U \\cdot \\Sigma \\cdot V^\\top ,\n", "\\tag{2.11}\n", "$$ \n", "\n", "hvor så $U$ er en $(2 \\times 2)$-matrix, $\\Sigma$ er en $(2 \\times 7)$-'diagonalmatrix', og $V^\\top$ er en $(7 \\times 7)$-matrix med følgende udseende for passende værdier af $\\theta$ og $\\sigma_1 \\geq \\sigma_2 \\geq 0$: \n", "\n", "$$\n", "U = \n", "\\begin{bmatrix}\n", "\\vert&\\vert\\\\\n", "u_1 & u_2 \\\\\n", "\\vert&\\vert\n", "\\end{bmatrix} =\n", "\\begin{bmatrix}\n", "\\cos(\\theta) & -\\sin(\\theta) \\\\\n", "\\sin(\\theta) & \\cos(\\theta)\n", "\\end{bmatrix}\n", "$$\n", "\n", "$$\n", "V^\\top = \n", "\\begin{bmatrix}\n", "-\\, v_1 \\, - \\\\\n", "-\\, v_2 \\, - \\\\\n", "-\\, v_3 \\, - \\\\\n", "-\\, v_4 \\, - \\\\\n", "-\\, v_5 \\, - \\\\\n", "-\\, v_6 \\, - \\\\\n", "-\\, v_7 \\, -\n", "\\end{bmatrix}\n", "$$\n", "\n", "$$\n", "\\Sigma = \n", "\\begin{bmatrix}\n", "\\sigma_1 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "0 & \\sigma_2 & 0 & 0 & 0 & 0 & 0\n", "\\end{bmatrix}\n", "$$\n", "\n", "Søjlevektorerne $u_k$, $k = 1, 2$, i $U$ er udtrykt simpelt ved den ene vinkel $\\theta$. Søjlevektorerne er enhedsvektorer og de står vinkelret på hinanden (prikproduktet er 0). Rækkevektorerne $v_\\ell$, $\\ell = 1, \\cdots, 7$, i matricen $V^\\top$ er også enhedsvektorer (i $\\mathbb{R}^7$ med 7 koordinater i hver vektor) som er parvis vinkelrette på hinanden (med hensyn til det naturlige prikprodukt i $\\mathbb{R}^7$).\n", "\n", "I Python kan vi beregne SVD af med matrix med funktionen `np.linalg.svd`." ] }, { "cell_type": "code", "execution_count": null, "id": "44541d32", "metadata": {}, "outputs": [], "source": [ "from numpy import array\n", "from numpy.linalg import svd\n", "\n", "U, sigma, VT = svd(array(Qc).astype(float))\n", "print(\"U-matrix:\\n\", U)\n", "print(\"Singulær-værdier:\\n\", sigma)\n", "print(\"V^T-matrix:\\n\", VT)" ] }, { "cell_type": "markdown", "id": "98786d6a", "metadata": {}, "source": [ "Den første søjle i $U$ kan vi skrive som \n", "\n", "$$\n", "u_1=\\begin{bmatrix} \\cos(\\theta)\\\\\\sin(\\theta)\\end{bmatrix}\n", "$$\n", "\n", "for en vinkel $\\theta\\in[0,2\\pi[$. Linjen $L_e$ for $e=u_1$ er den bedste linjeapproksimation for punktmængden $Q_c$. Vi ønsker altså at finde den tilsvarende vinkel $\\theta$. Fra trigonometri har vi, at\n", "\n", "$$\n", "\\tan(\\theta) = \\frac{\\sin(\\theta)}{\\cos(\\theta)}\n", "$$\n", "\n", "og\n", "\n", "$$\n", "\\theta = \\tan^{-1}\\left(\\frac{\\sin(\\theta)}{\\cos(\\theta)}\\right)=\\tan^{-1}\\left(\\frac{y}{x}\\right),\n", "$$\n", "\n", "hvis $x$ og $y$ er koordinaterne for $u_1$. I Python kan vi beregne $\\tan^{-1}$ med `atan()`. \n", "> Brug `atan()` til at bestemme vinklen $\\theta$." ] }, { "cell_type": "code", "execution_count": null, "id": "1d1eaa86", "metadata": {}, "outputs": [], "source": [ "theta = arctan(\"INDSÆT KODE HER\")" ] }, { "cell_type": "markdown", "id": "fe1d4b57", "metadata": {}, "source": [ "Vi kan nu prøve at bruge linjeapproksimationen givet ved vinklen $\\theta$. \n", ">Ser approksimationen god ud?\n", "\n", ">Får du en bedre værdi af fejlen end du fandt selv tidligere?" ] }, { "cell_type": "code", "execution_count": null, "id": "9633c683", "metadata": {}, "outputs": [], "source": [ "# Beregn S(Q,v)\n", "SQv = sum_afstand2(Qc, theta)\n", "\n", "# Genererer plot af punkter og linje\n", "Xc = [*Qc[0, :]]\n", "Yc = [*Qc[1, :]]\n", "p1 = plot_points(\n", " Xc,\n", " Yc,\n", " aspect=\"equal\",\n", " axis_center=(0, 0),\n", " title=f\"Sum af kvadrerede afstande: {SQv:.2f}\",\n", " show=False,\n", ")\n", "p2 = plot(tan(theta) * x, (x, min(Xc), max(Xc)), label=f\"theta = {theta:.2f}\", show=False)\n", "(p1 + p2).show()" ] } ], "metadata": { "jupytext": { "text_representation": { "extension": ".md", "format_name": "myst", "format_version": 0.13, "jupytext_version": "1.18.1" } }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.0" }, "source_map": [ 12, 23, 39, 71, 76, 82, 85, 96, 104, 111, 117, 135, 143, 147, 162, 179, 191, 195, 206, 212, 238, 245, 253, 273, 278, 282, 285, 290, 311, 317, 325, 376, 381, 404, 406, 413 ] }, "nbformat": 4, "nbformat_minor": 5 }